package com.corgi.dubbo;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;

/**
 * @title: ProviderApplication
 * @description:
 * @org.apache.dubbo.config.spring.context.annotation.EnableDubbo 开启基于注解的dubbo
 * @org.springframework.context.annotation.ImportResource(locations = "classpath:provider.xml")
 * @org.springframework.cloud.netflix.hystrix.EnableHystrix 开启服务容错
 * @author: dengmiao
 * @create: 2019-09-24 16:01
 **/
@EnableDubbo
@EnableHystrix
@SpringBootApplication
public class ProviderApplication {

	public static void main(String[] args) {
		SpringApplication.run(ProviderApplication.class, args);
	}

	/**
	 * springboot与dubbo整合的三种方式:
	 * 1、导入依赖
	 *      1）导入dubbo-starter及相关依赖
	 *      2）在application.yml中配置属性 使用@Service暴露服务
	 *          使用@Reference引用服务 前提是开启@EnableDubbo
	 *
	 * 2、保留dubbo.xml配置文件
	 *      1）导入dubbo-starter及相关依赖
	 *      2）使用@ImportResource导入dubbo的配置文件即可
	 * 3、使用注解API的方式
	 *      1)将每一个组件手动创建到容器中 让dubbo扫描其他的组件
	 */
	/**
	 * 注册中心zookeeper宕机 还可以消费dubbo暴露的服务
	 * 健壮性
	 *      监控中心宕机不影响使用 只是丢失部分采样数据
	 *      数据库宕机后 注册中心仍能通过缓存提供服务列表查询 但不能注册新服务
	 *      注册中心对等集群 任意一台宕机 将自动切换到另一台
	 *      注册中心全部宕掉 服务提供者和服务消费者仍能通过本地缓存通讯
	 *      服务提供者无状态 任意一台宕机 不影响使用
	 *      服务提供者全部宕掉后 服务消费者应用将无法使用 并无限次重连等待服务提供者恢复
	 */
}
